package com.itany.corejava.code11_线程;

/**
 * @author MissChen
 * @date 2024年03月13日 9:14
 */
public class Test11_死锁 extends Thread{
    static Object objA=new Object();
    static Object objB=new Object();

    @Override
    public void run() {
        while(true){
            if("线程A".equals(getName())){
                synchronized (objA){
                    System.out.println("线程A拿到了A锁，准备拿B锁");
                    synchronized (objB){
                        System.out.println("线程A拿到了B锁，顺利执行完一轮");
                    }
                }
            }
            if("线程B".equals(getName())){
                synchronized (objB){
                    System.out.println("线程B拿到了B锁，准备拿A锁");
                    synchronized (objA){
                        System.out.println("线程B拿到了A锁，顺利执行完一轮");
                    }
                }
            }
        }
    }
}

class Test{
    public static void main(String[] args) {
        Test11_死锁 t1=new Test11_死锁();
        t1.setName("线程A");
        t1.start();
        Test11_死锁 t2=new Test11_死锁();
        t2.setName("线程B");
        t2.start();
    }
}


